Linux运维之教你如何定制RPM包 | 您所在的位置:网站首页 › grep 逗号 › Linux运维之教你如何定制RPM包 |
rpmbuild方式定制rpm包 rpmbuid是用于制作rpm格式包的工具。rpm 4.4.x版本之前,rpmbuid工具默认的工作车间为/usr/src/redhat,所以造成普通用户不能制作rpm包。rpm 4.5.x版本开始,将rpmbuid工具默认的工作车间为$HOME/rpmbuild(用户家目录),并且推荐用户尽量不用root账号制作rpm包。 #rpm版本查看方法: [root@moban ~]# rpm -qa|grep rpm redhat-rpm-config-9.1.0-88.el7.centos.noarch rpm-sign-4.11.3-45.el7.x86_64 rpm-4.11.3-45.el7.x86_64 rpm-build-libs-4.11.3-45.el7.x86_64 python-srpm-macros-3-34.el7.noarch perl-srpm-macros-1-8.el7.noarch rpm-libs-4.11.3-45.el7.x86_64 rpm-python-4.11.3-45.el7.x86_64 rpmdevtools-8.3-8.el7_9.noarch rpm-build-4.11.3-45.el7.x86_64rpmbuild默认工作车间为/usr/lib/rpm/macros这个文件,具体由%_topdir宏变量进行定义。官方不建议在/usr/lib/rpm/macros目录中更改这个工作路径。如果需要则可以在用户家目录下建立一个.rpmmacros隐藏文件,在里面重新定义%_topdir,指向一个新的目录名。内容一般为: [root@moban ~]# cat .rpmmacros %_topdir %(echo $HOME)/rpmbuild在%_topdir目录下一般需要有6个目录(实际操作的时候执行命令自动创建): 备注:执行rpmdev-setuptree命令会在当前用户的家目录下的rpmbuild目录(如果该目录不存在也会被自动创建)里自动建立上述目录。 目录名 macros宏名 说明 BUILD %_builddir 编译rpm包的临时目录 BUILDROOT %_buildrootdir 编译后生成的软件临时安装目录 RPMS %_rpmdir 最终生成的可安装rpm包的所在目录 SOURCES %_sourcedir 所有源代码和补丁文件的存放目录 SPECS %_specdir 存放SPEC文件的目录(重要) SRPMS %_srcrpmdir 软件最终的rpm源码格式存放路径(暂时忽略掉,别挂在心上) 当上述目录建立好之后,将所有用于生成rpm包的源代码、shell脚本、配置文件都拷贝到SOURCES目录里,注意通常情况下源码的压缩格式都为*.tar.gz格式。然后将编辑好的SPEC文件,命名为“软件名-版本.spec”,将其拷贝到SPECS目录下。 最后切换SPEC目录下执行命令制作rpm包: rpmbuild -bb rpmbuild/SPEC/软件名-版本.specSPEC文件是最核心的,在它里面定义了头部信息和一些“阶段”(%prep、%build、%install、%clean、%pre、%post、%preun和%postun),当rpmbuild执行时它首先会去解析SPEC文件,然后依次执行每个“阶段”里的指令。 接下来,我们来简单了解一下SPEC文件的头部。假如,我们的源码包名字是myapp-0.1.0.tar.gz,那么myapp-0.1.0.spec的头部一般如下的样子: Name: myapp |
CopyRight 2018-2019 实验室设备网 版权所有 |